//
// Created by ls on 23-12-21.
//
#include <iostream>
#include <string>

// 字符串比较
// 一般判断两个字符是否相等

/*
std::string 的 compare 函数更适合于执行复杂的字符串比较操作，其中包括但不限于以下用途：

    字典顺序比较：
    compare 函数可以告诉你两个字符串在字典序中的先后顺序。它不仅能检测字符串是否相等，而且能够检测一个字符串是在另一个字符串之前还是之后。

    cpp

if (str1.compare(str2) < 0) {
  // str1 在字典序中位于 str2 之前
} else if (str1.compare(str2) > 0) {
  // str1 在字典序中位于 str2 之后
}

子字符串比较：
使用 compare 函数，你可以比较字符串的子串部分。你可以指定起始位置和长度来比较字符串的特定部分。

cpp

// 比较 str1 从位置 0 开始的 5 个字符是否和 str2 相等
if (str1.compare(0, 5, str2) == 0) {
  // 子字符串相等
}

与 C 风格字符串比较：
有时需要将 C++ 的 std::string 对象与传统的 C 风格字符串（即以 null 结尾的 char 数组）进行比较。compare 函数可以直接与 C 风格字符串进行比较，而不需要先把 C 风格字符串转换为 std::string 对象。

cpp

    const char* c_str = "hello";
if (str1.compare(c_str) == 0) {
  // 与 C 风格字符串相等
}

compare 函数提供了很多重载版本，可以满足不同的比较需求，这使得它在需要执行复杂比较逻辑时非常有用。但是，对于简单的相等性检测，直接使用 == 运算符更为直接和清晰。
*/



void test01()
{
  const std::string str1 = "hello";
  const char * str2 = "hello";

  if (str1 == str2) {
    std::cout << "str1 和 str2 相等" << std::endl;
  } else {
    std::cout << "str1 和 str2 不相等" << std::endl;
  }

  if (str1.compare(str2)) {
    std::cout << "str1 和 str2 相等" << std::endl;
  } else {
    std::cout << "str1 和 str2 不相等" << std::endl;
  }
}

int main()
{
  test01();
  return 0;
}
